//--------------------------------------------------------------------//
//  Clase creada automaticamente  -  miércoles, 23 de noviembre de 2011   //
//                                                                    //
//  Puede ser modificada, el generador no sobreescribe este archivo.  //
//--------------------------------------------------------------------//
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Specialized;
using System.Collections.Generic;
using DataBaseManager;
using Utilities.Common;
using BL.DataAccess;

namespace BL.Entities
{
	public partial class ColeccionPacientes : List<Paciente>
	{
		//  Agregue su codigo aqui...

		public static ColeccionPacientes FindAll()
		{
			return DataBase.Current.Load<ColeccionPacientes,Paciente>(Tables.Pacientes);
		}

        /// <summary>
        /// Busca por apellido y o nombre
        /// </summary>
        /// <param name="pApellido"></param>
        public  static  ColeccionPacientes  LoadByApellido(string pApellido)
        {
            
            Paciente p;
            DataTable dt;
            ColeccionPacientes pM = new ColeccionPacientes();
            ParameterManager parameters = new ParameterManager();
                        
            dt = DataBase.Current.ExecuteSQL("Select * from Pacientes where apellido + ' '+nombre +' '+ apellido like '%" + pApellido.Replace(" ", "%") + "%'");
            foreach (DataRow dr in dt.Rows)
            {
                p = LoadRow(dr);
                pM.Add(p);
            }

            return pM;
        }

        
        private static Paciente LoadRow(DataRow r)
        {
            Paciente p = null;
            if (r != null)
            {

                p = new Paciente();
                p.NumeroAfiliado  = r["NumeroAfiliado"].ToString();
                p.Nombre = r["nombre"].ToString();
                p.Apellido = r["Apellido"].ToString();                                           
                p.Telefono = r["telefono"].ToString();
                p.Mail = r["mail"].ToString();                
                p.ObraSocial = ColeccionObrasSociales.Current.GetByNombre(r["NombreObra"].ToString());
                
            }
            return p;
        }

        public static Paciente  FindById(string p)
        {

            ParameterManager pM = new ParameterManager();
            pM.Add(new Parameter("NumeroAfiliado" , p));
            DataTable dt =DataBase.Current.Select(Tables.Pacientes,pM);
            if (dt.Rows.Count ==1){
                return LoadRow (dt.Rows[0]);
            }
            return null;
        }
        static ColeccionPacientes mCurrent;
        public static ColeccionPacientes Current {
            get
            {
                if (mCurrent == null)
                {

                    mCurrent = ColeccionPacientes.FindAll();
                }
                return mCurrent ;
            }
            set { mCurrent = value; }
        
        
        }
    }
}
